<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    // Promise.all()是用来做异步并发的一个方法

    // const p1 = new Promise((resolve, reject) => {
    //   setTimeout(() => {
    //     let count = 3;
    //     if (count >= 0) {
    //       resolve("p1 成功了")
    //     } else {
    //       reject("p1 失败了")
    //     }
    //   }, 2000)
    // })

    // const p2 = new Promise((resolve, reject) => {
    //   setTimeout(() => {
    //     let num = -3;
    //     if (num >= 0) {
    //       resolve("p2 成功了")
    //     } else {
    //       reject("p2 失败了")
    //     }
    //   }, 4000)
    // })
  
    // all是一个构造函数的方法
    // 它需要接受一个数组作为参数, 并且是一个由promise实例组成的数组
    // Promise.all()调用返回一个promise对象

    // 当数组的每一个promise实例都成功了以后，才会去执行then方法
    // 成功的时候的res也是数组，是由成功的结果组成的数组

    // 当数组的promise实例只要有一个失败了，那么整体就失败了，就会执行catch方法
    // catch的err是第一个失败的promise的结果
    
    // Promise.all([p1, p2]).then(res => {
    //   console.log(res); // ['p1 成功了', 'p2 成功了']
    // }).catch(err => {
    //   console.log(err); // 'p2 失败了'
    // })

  </script>
</body>
</html>
